#include <string>

using namespace std;

class Solution {
private:
    bool valid(string& s, int i, int j) {
        while (i < j) {
            if (s[i] != s[j]) {
                return false;
            }
            i++;
            j--;
        }
        return true;
    }
public:
    bool validPalindrome(string s) {
        int i = 0;
        int j = s.size() - 1;
        while (i < j) {
            if (s[i] == s[j]) {
                i++;
                j--;
            } else {
                return valid(s, i + 1, j) || valid(s, i, j - 1);
            }
        }
        return true;
    }
};